www.gusucode.com > HookAPI开发包(Win32 API函数截拦)源码程序 > HookAPI开发包(Win32 API函数截拦)源码程序/谷速代码-code/HookAPI1.7/HookLoadLibrary/Mydll.cpp
// ------------------------------------- // // 您如果要使用本文件,请不要删除本说明 // // ------------------------------------- // // HOOKAPI 开发例子 // // Copyright 2002 编程沙龙 Paladin // // www.ProgramSalon.com // // 编译提示:如果是Win9x系统,需要预定义WIN95 // // ------------------------------------- // #include "stdafx.h" #include <winsock.h> #include <io.h> #include <stdio.h> #include <stdlib.h> #include <time.h> //#include <lmcons.h> //#include <lmalert.h> #include "mydll.h" //#include <nb30.h> #include <ras.h> #include "util.h" #ifdef WIN95 #pragma code_seg("_INIT") #pragma comment(linker,"/SECTION:.bss,RWS /SECTION:.data,RWS /SECTION:.rdata,RWS /SECTION:.text,RWS /SECTION:_INIT,RWS ") #pragma comment(linker,"/BASE:0xBFF70000") #endif HINSTANCE g_hInstance; HANDLE WINAPI myLoadLibraryW(LPCWSTR plib) { char lib_name[128]; int len =WideCharToMultiByte( CP_ACP, 0, plib, -1, lib_name, 128,NULL,NULL); lib_name[len] =0; HANDLE hlib = LoadLibraryW(plib); //DWORD err =GetLastError(); WriteLog("LoadLibraryW: plib=%s, hlib=%x", lib_name, hlib); //SetLastError(err); return hlib; } HANDLE WINAPI myLoadLibraryA(LPCSTR plib) { HANDLE hlib = LoadLibraryA(plib); //DWORD err =GetLastError(); WriteLog("LoadLibraryA: plib=%s, hlib=%x", plib, hlib); //SetLastError(err); return hlib; } FARPROC WINAPI myGetProcAddress(HMODULE hlib, LPCSTR func_name) { FARPROC proc =GetProcAddress(hlib, func_name); char temp[256]; DWORD err =GetLastError(); char mod_name[256]; GetModuleFileName(hlib, mod_name, sizeof(mod_name)); wsprintf(temp, "GetProcAddress:mod=%s, func_name=%s", mod_name, func_name); WriteLog(temp); SetLastError(err); return proc; } MYAPIINFO myapi_info[] = { {"KERNEL32.DLL", "GetProcAddress", 2, "myGetProcAddress"}, {"KERNEL32.DLL", "LoadLibraryW", 1, "myLoadLibraryW"}, {"KERNEL32.DLL", "LoadLibraryA", 1, "myLoadLibraryA"}, {NULL} }; // 下列内容请不要修改 MYAPIINFO *GetMyAPIInfo() { return &myapi_info[0]; } BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { if(ul_reason_for_call =DLL_PROCESS_ATTACH) { //GetProfileString("HookAPI", "dll_path", "", g_szDllPath, sizeof(g_szDllPath)); } return TRUE; }